home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 101 / CD-ROM 101.iso / compl / maya5ple / Install_MayaPLE5_English.exe / Maya / Data1.cab / createMayaHardwareGlobalsTab < prev    next >
Encoding:
Text File  |  2003-07-17  |  13.1 KB  |  379 lines

  1. // Copyright (C) 1997-2002 Alias|Wavefront,
  2. // a division of Silicon Graphics Limited.
  3. //
  4. // The information in this file is provided for the exclusive use of the
  5. // licensees of Alias|Wavefront.  Such users have the right to use, modify,
  6. // and incorporate this code into other products for purposes authorized
  7. // by the Alias|Wavefront license agreement, without fee.
  8. //
  9. // ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  10. // INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  11. // EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  12. // CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  13. // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  14. // TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  15. // PERFORMANCE OF THIS SOFTWARE.
  16. //
  17. //==================================================================
  18. // MayaHardware Renderer Tab
  19. //==================================================================
  20.  
  21. // Description:
  22. // This procedure is called to build the "Render Option" frame
  23. // in the "Hardware" tab for the Maya hardware renderer in 
  24. // the unified render globals.
  25. //
  26. proc createHardwareRenderOptionsFrame (string $parent)
  27. {
  28.     setUITemplate -pushTemplate attributeEditorTemplate;
  29.  
  30.     setParent $parent;
  31.  
  32.     columnLayout -adjustableColumn true rgQualityLayout;
  33.  
  34.     attrControlGrp -attribute "hardwareRenderGlobals.enableRenderLayers"
  35.         -cc updateMayaHardwareTargetFilePreview;
  36.  
  37.     attrControlGrp -attribute "hardwareRenderGlobals.culling";
  38.  
  39.     separator;
  40.  
  41.     // Motion Blur
  42.     //
  43.     attrControlGrp -label "Enable Motion Blur"
  44.         -attribute "hardwareRenderGlobals.enableMotionBlur"
  45.         -cc "updateMayaHardwareMotionBlur";
  46.  
  47.     attrControlGrp -label "Motion Blur By Frame"
  48.         -attribute "hardwareRenderGlobals.motionBlurByFrame"
  49.         -enable `getAttr "hardwareRenderGlobals.enableMotionBlur"`
  50.         mayaHardwareMotionBlurByFrame;
  51.     
  52.     attrControlGrp -label "Number of Exposures"
  53.         -attribute "hardwareRenderGlobals.numberOfExposures"
  54.         -enable `getAttr "hardwareRenderGlobals.enableMotionBlur"`
  55.         mayaHardwareNumberOfExposures;
  56.  
  57.  
  58.     
  59.     attrControlGrp -attribute "hardwareRenderGlobals.enableGeometryMask";
  60.         
  61.     setParent ..;
  62.     setUITemplate -popTemplate; 
  63. }
  64.  
  65. // Description:
  66. // This procedure is called to create the "Hardware" globals tab
  67. // in the unified render globals for the maya hardware renderer.
  68. //
  69. global proc createMayaHardwareGlobalsTab()
  70. {
  71.     string $parentForm = `setParent -query`;
  72.     scrollLayout -horizontalScrollBarThickness 0 scrollLayout;
  73.     columnLayout -adjustableColumn true;
  74.  
  75.     frameLayout -labelVisible false -collapsable false -collapse false; 
  76.     columnLayout -adjustableColumn true;
  77.     setUITemplate -pushTemplate attributeEditorTemplate;
  78.  
  79.     // Hardware Render Quality 
  80.     //
  81.     frameLayout -label "Quality" 
  82.         -collapsable true -collapse false
  83.         hwQualityFrame;
  84.  
  85.     createHardwareRenderQuality ("hwQualityFrame"); 
  86.     setParent ..;
  87.  
  88.     // Hardware Render Options 
  89.     //
  90.  
  91.     frameLayout -label "Render Options" 
  92.         -collapsable true -collapse false
  93.         hwRenderOptionsFrame;
  94.  
  95.     createHardwareRenderOptionsFrame ("hwRenderOptionsFrame"); 
  96.     setParent ..;
  97.  
  98.  
  99.     setUITemplate -popTemplate;
  100.     setParent ..;
  101.     setParent ..;
  102.  
  103.     setParent ..;
  104.     setParent ..;
  105.  
  106.     formLayout 
  107.         -edit
  108.         -af scrollLayout "top" 0
  109.         -af scrollLayout "bottom" 0
  110.         -af scrollLayout "left" 0
  111.         -af scrollLayout "right" 0
  112.         $parentForm;
  113.                 
  114.     updateHardwareQualityPresetMenu(); 
  115. }
  116.  
  117.  
  118. // Description:
  119. // This procedure is called to update the "Motion Blur" frame.
  120. // in the "Hardware" tab in the unified render globals window.
  121. //
  122. global proc updateMayaHardwareMotionBlur()
  123. {
  124.     attrControlGrp 
  125.         -edit
  126.         -enable `getAttr "hardwareRenderGlobals.enableMotionBlur"`
  127.         mayaHardwareMotionBlurByFrame;
  128.  
  129.     attrControlGrp
  130.         -edit
  131.         -enable `getAttr "hardwareRenderGlobals.enableMotionBlur"`
  132.         mayaHardwareNumberOfExposures; 
  133.         
  134. }
  135.  
  136. // Description:
  137. // This procedure is called to create the "Render Quality"
  138. // frame in the "Hardware" tab in the unified render globals window.
  139. //
  140. global proc createHardwareRenderQuality (string $parent)
  141. {
  142.     setUITemplate -pushTemplate attributeEditorTemplate;
  143.  
  144.     setParent $parent;
  145.  
  146.     columnLayout -adjustableColumn true rgQualityLayout;
  147.  
  148.     createHardwareQualityPresetMenu();
  149.  
  150.     // High Quality Lighting
  151.     //
  152.     attrControlGrp -label "Enable High Quality Lighting"
  153.                 -attribute "hardwareRenderGlobals.enableHighQualityLighting"
  154.                 -cc " updateHardwareQualityPresetMenu";
  155.  
  156.     // Accelerated multi-sampling (for hardware anti-aliasing)
  157.     //
  158.     attrControlGrp -label "Enable Accelerated Multi-Sampling"
  159.                 -attribute "hardwareRenderGlobals.enableAcceleratedMultiSampling"
  160.                 -cc " updateHardwareQualityPresetMenu";
  161.  
  162.     attrControlGrp 
  163.         -attribute "hardwareRenderGlobals.numberOfSamples" 
  164.         -cc "updateHardwareQualityPresetMenu";
  165.         // hardwareNumberOfSamples;
  166.  
  167.     separator;
  168.  
  169.     // Transparency Quality
  170.     //
  171. // WAITING WAITING WAITING
  172. // WAITING FOR sync to the latest build which contains 
  173. //  enableTransparency attributes.
  174. //
  175.  
  176. //    attrControlGrp 
  177. //        -attribute "hardwareRenderGlobals.enableTransparency" 
  178. //        -cc "updateHardwareQualityPresetMenu();"
  179. //        hardwareEnableTransparency;
  180.  
  181.     attrControlGrp
  182.         -label "Transparent Shadow Casting"
  183.         -attribute "hardwareRenderGlobals.transparentShadowCasting";
  184.  
  185.     rowLayout -numberOfColumns 2;
  186.     text -label "Transparency Sorting";
  187.     optionMenu 
  188.         -cc "hardwareTransparencySortingMenuChanged"
  189.         hardwareTransparencySortingMenu;
  190.         menuItem -label "Per Object";
  191.         menuItem -label "Per Polygon";
  192.  
  193.     updateHardwareTransparencySortingMenu();
  194.  
  195.  
  196.     scriptJob -p hardwareTransparencySortingMenu
  197.         -ac "hardwareRenderGlobals.transparencySorting"
  198.         updateHardwareTransparencySortingMenu;
  199.     setParent ..;  // from rowLayout
  200.     
  201.     separator;
  202.  
  203.     // Texture Quality
  204.     //
  205.     attrControlGrp 
  206.          -label "Color Texture Resolution"
  207.          -attribute "hardwareRenderGlobals.colorTextureResolution"
  208.          -cc "updateHardwareQualityPresetMenu";
  209.  
  210.     attrControlGrp 
  211.          -label "Bump Texture Resolution"
  212.          -attribute "hardwareRenderGlobals.bumpTextureResolution"
  213.          -cc "updateHardwareQualityPresetMenu";
  214.  
  215.     attrControlGrp 
  216.          -label "Texture Compression"
  217.          -attribute "hardwareRenderGlobals.textureCompression";
  218.  
  219.     setParent ..;
  220.     setUITemplate -popTemplate; 
  221. }
  222.  
  223. global proc updateHardwareTransparencySortingMenu()
  224. {
  225.     int $sorting = `getAttr hardwareRenderGlobals.transparencySorting`;
  226.     $sorting++;
  227.     optionMenu -edit -select $sorting hardwareTransparencySortingMenu;
  228.     updateHardwareQualityPresetMenu;
  229. }
  230.  
  231. global proc hardwareTransparencySortingMenuChanged()
  232. {
  233.     int $sorting = `optionMenu -query -select hardwareTransparencySortingMenu`; 
  234.     $sorting--;
  235.     setAttr hardwareRenderGlobals.transparencySorting $sorting;
  236. }
  237.  
  238. global proc updateMayaHardwareGlobalsTab()
  239. {
  240. }
  241.  
  242. global proc mayaHardwareGlobalsRevertToDefault()
  243. {
  244. }
  245.  
  246. // Description:
  247. // This procedure is called to create the "Quality Preset" menu in
  248. // the "Hardware" tab in the unified render globals window.
  249. // 
  250. global proc createHardwareQualityPresetMenu()
  251. {
  252.     optionMenuGrp -label "Presets" hardwareQualityPresetMenu;
  253.     optionMenuGrp -edit -cc hardwareSetDefaultQuality -cw 2 240 hardwareQualityPresetMenu;
  254.             
  255.     menuItem -label "Custom" hardwareCustomQuality;
  256.     menuItem -label "Preview Quality" hardwarePreviewQuality;
  257.     menuItem -label "Intermediate Quality" hardwareIntermediateQuality;
  258.     menuItem -label "Production Quality" hardwareProductionQuality;
  259.     menuItem -label "Production Quality with Transparency" hardwareProdWithTransparency;
  260.  
  261. }
  262.  
  263. // Description: This procedure is called when a particular 
  264. //      quality preset is chosen in the render quality frame.
  265. //      It sets some attributes according to the chosen quality preset.
  266. //
  267. global proc hardwareSetDefaultQuality ()
  268. {
  269.     string $renderer = "mayaHardware";
  270.     string $globalsNodes[] = `renderer -query -globalsNodes $renderer`;
  271.     string $curr = `optionMenuGrp -q -v hardwareQualityPresetMenu`;
  272.     if ($curr == "Preview Quality") 
  273.     {
  274.         setAttr ($globalsNodes[0] + ".enableHighQualityLighting") off;
  275.         setAttr ($globalsNodes[0] + ".enableAcceleratedMultiSampling") off;
  276.         setAttr ($globalsNodes[0] + ".enableEdgeAntiAliasing") off; // M6 to be removed
  277.         setAttr ($globalsNodes[0] + ".numberOfSamples") 1;
  278.         setAttr ($globalsNodes[0] + ".colorTextureResolution") 128;
  279.         setAttr ($globalsNodes[0] + ".bumpTextureResolution")  256;
  280.         setAttr ($globalsNodes[0] + ".transparencySorting")  0;
  281.     } 
  282.     else if ($curr == "Intermediate Quality") 
  283.     {
  284.         setAttr ($globalsNodes[0] + ".enableHighQualityLighting") on;
  285.         setAttr ($globalsNodes[0] + ".enableAcceleratedMultiSampling") on;
  286.         setAttr ($globalsNodes[0] + ".enableEdgeAntiAliasing") on; // M6 to be removed
  287.         setAttr ($globalsNodes[0] + ".numberOfSamples") 1;
  288.         setAttr ($globalsNodes[0] + ".colorTextureResolution") 256;
  289.         setAttr ($globalsNodes[0] + ".bumpTextureResolution")  512;
  290.         setAttr ($globalsNodes[0] + ".transparencySorting")  0;
  291.     } else if ($curr == "Production Quality") 
  292.     {
  293.         setAttr ($globalsNodes[0] + ".enableHighQualityLighting") on;
  294.         setAttr ($globalsNodes[0] + ".enableAcceleratedMultiSampling") on;
  295.         setAttr ($globalsNodes[0] + ".enableEdgeAntiAliasing") on; // M6 to be removed
  296.         setAttr ($globalsNodes[0] + ".numberOfSamples") 9;
  297.         setAttr ($globalsNodes[0] + ".colorTextureResolution") 512;
  298.         setAttr ($globalsNodes[0] + ".bumpTextureResolution")  1024;
  299.         setAttr ($globalsNodes[0] + ".transparencySorting")  0;
  300.     } 
  301.     else if ($curr == "Production Quality with Transparency") 
  302.     {
  303.         setAttr ($globalsNodes[0] + ".enableHighQualityLighting") on;
  304.         setAttr ($globalsNodes[0] + ".enableAcceleratedMultiSampling") on;
  305.         setAttr ($globalsNodes[0] + ".enableEdgeAntiAliasing") on; // M6 to be removed
  306.         setAttr ($globalsNodes[0] + ".numberOfSamples") 9;
  307.         setAttr ($globalsNodes[0] + ".colorTextureResolution") 512;
  308.         setAttr ($globalsNodes[0] + ".bumpTextureResolution")  1024;
  309.         setAttr ($globalsNodes[0] + ".transparencySorting")  1;
  310.     } 
  311.     else    // Custom Quality
  312.     {
  313.         // WAITING for a bug fix for "enable" to work for attrControlGrp
  314.         // for enum controls.
  315.         //
  316. //        attrControlGrp -edit -enable true hardwareNumberOfSamples;
  317.     }
  318.  
  319.     // updateHardwareRenderQuality ()
  320. }
  321.  
  322. // Description:  This procedure is called to update the 
  323. //      "Quality Preset" menu in the "Hardware" tab in
  324. //      the unified render globals window.      
  325. //
  326. global proc updateHardwareQualityPresetMenu()
  327. {
  328.     string $renderer = "mayaHardware";
  329.     string $globalsNodes[] = `renderer -query -globalsNodes $renderer`;
  330.     int $enableHighQualityLighting =
  331.         `getAttr ($globalsNodes[0] + ".enableHighQualityLighting")`; 
  332.     int $enableAcceleratedMultiSampling=
  333.         `getAttr ($globalsNodes[0] + ".enableAcceleratedMultiSampling")`; 
  334.     int $numberOfSamples =
  335.         `getAttr ($globalsNodes[0] + ".numberOfSamples")`; 
  336.     int $colorTextureResolution =
  337.         `getAttr ($globalsNodes[0] + ".colorTextureResolution")`;
  338.     int $bumpTextureResolution =
  339.         `getAttr ($globalsNodes[0] + ".bumpTextureResolution")`; 
  340.     int $transparencySorting =
  341.         `getAttr ($globalsNodes[0] + ".transparencySorting")`;
  342.  
  343.     // See if the current settings of the 5 attributes we just queried
  344.     // match any preset settings, and set the Presets menu state
  345.     // accordingly
  346.     //
  347.     if ($enableHighQualityLighting == off && $enableAcceleratedMultiSampling == off
  348.             && $numberOfSamples == 1
  349.             && $colorTextureResolution == 128 && $bumpTextureResolution == 256
  350.             && $transparencySorting == 0 )
  351.     { 
  352.         optionMenuGrp -edit -sl 2 hardwareQualityPresetMenu; // Preview Quality
  353.     }
  354.     else if ($enableHighQualityLighting == on && $enableAcceleratedMultiSampling == on
  355.             && $numberOfSamples == 1
  356.             && $colorTextureResolution == 256 && $bumpTextureResolution == 512
  357.             && $transparencySorting == 0 )
  358.     { 
  359.         optionMenuGrp -edit -sl 3 hardwareQualityPresetMenu; // Intermediate Quality
  360.     }
  361.     else if ($enableHighQualityLighting == on && $enableAcceleratedMultiSampling == on
  362.             && $numberOfSamples == 9 
  363.             && $colorTextureResolution == 512 && $bumpTextureResolution == 1024
  364.             && $transparencySorting == 0 )
  365.     { 
  366.         optionMenuGrp -edit -sl 4 hardwareQualityPresetMenu; // Production Quality
  367.     }
  368.     else if ($enableHighQualityLighting == on && $enableAcceleratedMultiSampling == on
  369.             && $numberOfSamples == 9
  370.             && $colorTextureResolution == 512 && $bumpTextureResolution == 1024
  371.             && $transparencySorting == 1 )
  372.     { 
  373.         optionMenuGrp -edit -sl 5 hardwareQualityPresetMenu; // Production Quality with Transparency
  374.     } 
  375.     else {
  376.         optionMenuGrp -edit -sl 1 hardwareQualityPresetMenu; // Custom
  377.     }
  378. }
  379.